package com.zzb.projectfactory.framework.validator.util;

import com.zzb.projectfactory.framework.validator.ret.ValidatorRet;
import org.apache.commons.collections.MapUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 对ValidatorRet操作的工具类
 * Created by zhangzhenbin on 2016/12/23.
 */
public class ValidatorRetUtils {
    /**给ValidatorRet增加验证消息*/
    public static ValidatorRet addMessage(ValidatorRet validatorRet, String key , String msg){
        //如果数据不全，则初始化
        if(validatorRet == null) validatorRet = new ValidatorRet();
        if(validatorRet.getValidatorMsgs() == null) validatorRet.setValidatorMsgs(new HashMap<>());
        if(!validatorRet.getValidatorMsgs().containsKey(key)) validatorRet.getValidatorMsgs().put(key,new ArrayList<>());
        validatorRet.getValidatorMsgs().get(key).add(msg);
        if(validatorRet.isSuccess()){
            validatorRet.setStatus(ValidatorRet.FAIL);
            validatorRet.setMsg("表单验证失败");
        }
        return validatorRet;
    }
    /**给ValidatorRet增加验证消息*/
    public static ValidatorRet addMessagesMap(ValidatorRet validatorRet, Map<String,List<String>> errorMsg){
        if(MapUtils.isNotEmpty(errorMsg)){
            errorMsg.forEach((key, strings) -> {
                strings.forEach(msg -> {
                    addMessage(validatorRet,key,msg);
                });
            });
        }
        return validatorRet;
    }

    /**获取消息返回值*/
    public static String getErrorMessages(ValidatorRet validatorRet){
        if(validatorRet.isSuccess() || MapUtils.isEmpty(validatorRet.getValidatorMsgs()))return "验证成功";
        final StringBuilder errorMsgSb = new StringBuilder();
        validatorRet.getValidatorMsgs().forEach((key, strings) -> {
            errorMsgSb.append(key).append(":");
            strings.forEach(msg -> errorMsgSb.append("[").append(msg).append("]"));
            errorMsgSb.append(";");
        });
        return errorMsgSb.toString();
    }
}
